package Day008_List_Collections_set.Demo01_List接口;

/*
    List集合(接口): 继承Collection接口,可以拥有Collection集合多有方法
                特点:1.元素可以重复
                    2.元素有索引
                    3.元素存取有序
                继承体系:1.ArrayList集合(类)
                       2.LinkedList集合(类)

             ###常用方法: list接口新增方法:
                                    1.public void add(int index, E element) : 将指定的元素，添加到该集合中的指定位置上。
                                    2.public E get(int index) :返回集合中指定位置的元素。
                                    3.public E remove(int index) : 移除列表中指定位置的元素, (返回的是被移除的元素)。
                                    4.public E set(int index, E element) :用指定元素替换集合中指定位置的元素,(返回的是被替换的元素)

                                    5.collection中的其他方法:clear contain....

 */

import java.util.ArrayList;
import java.util.List;

public class List接口 {
    public static void main(String[] args) {
/*

        //创建对象
        List<String> list = new ArrayList<>();//多态 接口引用指向实现类对象
        //添加元素,可以重复
        list.add("文章");
        list.add("PGone");
        list.add("罗志祥");
        //打印集合
        System.out.println(list); // [文章, PGone, 罗志祥]
        //按索引取出
        System.out.println(list.get(0));
        System.out.println(list.get(1));
        System.out.println(list.get(2));

*/

        //常用方法
        List<String> list = new ArrayList<>();

        //1.add(int index, E element) : 将指定的元素，添加到该集合中的指定位置上
        list.add("文章");
        list.add("PGone");
        list.add("罗志祥");
        System.out.println("原集合:" + list); // [文章, PGone, 罗志祥]
        //将陈冠希添加到索引1位置上
        list.add(1,"陈冠希");
        System.out.println("添加元素后的集合:" + list); // [文章, 陈冠希, PGone, 罗志祥]
        System.out.println("------------");

        //2.get
        System.out.println(list.get(1));
        //普通for遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        System.out.println("------------");

        //3.remove(int index) 移除列表中指定位置的元素, 返回的是被移除的元素
        list.remove("文章"); //移除指定元素,返回boolean
        String stu = list.remove(1); //移除索引位置元素,返回移除的元素
        System.out.println("移除的元素" + stu);
        System.out.println("移除后集合"+list); //[陈冠希, 罗志祥]

        //4.set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的被替换的元素
        String stu1 = list.set(0, "老王");
        System.out.println(stu1); //陈冠希
        System.out.println(list); //[老王, 罗志祥]
        //=============================================
        List<Integer> list1 = new ArrayList<>();
        list1.add(1);
        list1.add(2);
        list1.add(3);
        list1.add(4);
        System.out.println(list1);

        //remove(int index)  remove(Object o)
        list1.remove(2); //直接写整数 默认int类型,是索引
        list1.remove(new Integer(2)); //删除2元素
        System.out.println(list1); //[1, 4]
    }
}
